9898. LinkedList Сумма

 

Задан связный список. Найдите сумму его элементов.

Определение связного списка:

 

//Java

class ListNode {

  int val;

  ListNode next;

  ListNode(int x) {

    val = x;

    next = null;

  }

}

 

// C++

class ListNode

{

public:

  int val;

  ListNode *next;

  ListNode(int x) : val(x), next(NULL) {}

};

 

// C

struct ListNode

{

  int val;

  struct ListNode* next;

};

 

Реализуйте функцию sum, которая находит сумму элементов связного списка.

 

// Java

int sum(ListNode head)

 

// C, C++

int sum(ListNode *head)

 

Пример

Сумма элементов списка равна 6.

 

 

РЕШЕНИЕ

связный список

 

Анализ алгоритма

Двигаемся по списку с начала в конец и суммируем значения всех его элементов.

 

Реализация алгоритма

В переменной res подсчитываем сумму элементов списка.

 

int sum(ListNode *head)

{

  int res = 0;

 

Двигаемя вперед по списку пока head не станет раным NULL. Прибавляем к res текущее значение элемента списка head->val.

 

  while (head != NULL)

  {

    res += head->val;

    head = head->next;

  }

  return res;

}

 

Java реализация

 

int sum(ListNode head)

{

  int res = 0;

  while(head != null)

  {

    res += head.val;

    head = head.next;

  }

  return res;

}